4 research outputs found
Code Building Genetic Programming
In recent years the field of genetic programming has made significant
advances towards automatic programming. Research and development of
contemporary program synthesis methods, such as PushGP and Grammar Guided
Genetic Programming, can produce programs that solve problems typically
assigned in introductory academic settings. These problems focus on a narrow,
predetermined set of simple data structures, basic control flow patterns, and
primitive, non-overlapping data types (without, for example, inheritance or
composite types). Few, if any, genetic programming methods for program
synthesis have convincingly demonstrated the capability of synthesizing
programs that use arbitrary data types, data structures, and specifications
that are drawn from existing codebases. In this paper, we introduce Code
Building Genetic Programming (CBGP) as a framework within which this can be
done, by leveraging programming language features such as reflection and
first-class specifications. CBGP produces a computational graph that can be
executed or translated into source code of a host language. To demonstrate the
novel capabilities of CBGP, we present results on new benchmarks that use
non-primitive, polymorphic data types as well as some standard program
synthesis benchmarks.Comment: Proceedings of the 2020 Genetic and Evolutionary Computation
Conference, Genetic Programming Trac
PonyGE2: Grammatical Evolution in Python
Grammatical Evolution (GE) is a population-based evolutionary algorithm,
where a formal grammar is used in the genotype to phenotype mapping process.
PonyGE2 is an open source implementation of GE in Python, developed at UCD's
Natural Computing Research and Applications group. It is intended as an
advertisement and a starting-point for those new to GE, a reference for
students and researchers, a rapid-prototyping medium for our own experiments,
and a Python workout. As well as providing the characteristic genotype to
phenotype mapping of GE, a search algorithm engine is also provided. A number
of sample problems and tutorials on how to use and adapt PonyGE2 have been
developed.Comment: 8 pages, 4 figures, submitted to the 2017 GECCO Workshop on
Evolutionary Computation Software Systems (EvoSoft
Comparing and Combining Lexicase Selection and Novelty Search
Lexicase selection and novelty search, two parent selection methods used in
evolutionary computation, emphasize exploring widely in the search space more
than traditional methods such as tournament selection. However, lexicase
selection is not explicitly driven to select for novelty in the population, and
novelty search suffers from lack of direction toward a goal, especially in
unconstrained, highly-dimensional spaces. We combine the strengths of lexicase
selection and novelty search by creating a novelty score for each test case,
and adding those novelty scores to the normal error values used in lexicase
selection. We use this new novelty-lexicase selection to solve automatic
program synthesis problems, and find it significantly outperforms both novelty
search and lexicase selection. Additionally, we find that novelty search has
very little success in the problem domain of program synthesis. We explore the
effects of each of these methods on population diversity and long-term problem
solving performance, and give evidence to support the hypothesis that
novelty-lexicase selection resists converging to local optima better than
lexicase selection
Introducing Semantic-Clustering Selection in Grammatical Evolution
2015 Annual Conference on Genetic and Evolutionary Computation (GECCO 2015), Madrid, Spain, July, 2015Semantics has gained much attention in the last few years and new advanced crossover and mutation operations have been created which use semantic information to improve the quality and generalisability of individuals in genetic programming. In this paper we present a new selection operator in grammatical evolution which uses semantic information of individuals instead of just the fitness value. The semantic traits of an individual are stored in a vector. An unsupervised learning technique is used to cluster individuals based on their semantic vector. Individuals are only allowed to reproduce with individuals from the same cluster to preserve semantic locality and intensify the search in a certain semantic area. At the same time, multiple semantic areas are covered by the search as there exist multiple clusters which cover different areas and therefore preserve semantic diversity. This new selection operator is tested on several symbolic regression benchmark problems and compared to grammatical evolution with tournament selection to analyse its performance.Science Foundation Irelan